﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Studio7i.CapaDominio;

namespace Studio7i.CapaNegocio
{
    interface IClienteService
    {
        #region Operaciones de negocio
        Cliente RegistrarCliente(int codigo, string nombres, string email,string fechaNacimiento, string clave1, string clave2);
        Reserva RegistrarReserva(string feinicio, string fefinal, decimal ssreserva, int codigoSala, int codigoCliente);
        ArmadoDeReserva RegistrarArmadoReserva(int armresCodigo, decimal ssarmado, int codigoReserva, int codigoInstrumento, int codigoServicios);
         ICollection<Sala> BusquedaDeSala(string nombreSala, string nombreLocal, string guitarra, string teclado, int? capacidad, string grabacion, string fechaHoraDisponible);
        #endregion

        #region Métodos de soporte para entidad Cliente
        Cliente ObtenerCliente(int codigo);
        ICollection<Cliente> ListarClientes();
        ICollection<Cliente> ListarClientesXNombre(string nombre);
        ICollection<Cliente> ListarClienteXBusqueda(int? codigo, string nombres, string email, string fechaNacimiento, string clave);
        #endregion

        #region Métodos de soporte para entidad Reserva
        Reserva CrearReserva(Reserva reservaACrear);
        Reserva ObtenerReserva(int codigo);
        Reserva ModificarReserva(Reserva reservaAModificar);
        void EliminarReserva(Reserva reservaAEliminar);
        ICollection<Reserva> ListarReservas();
        ICollection<Reserva> ListarReservaBusqueda(int? reservaCodigo, string feinicio, string fefinal, decimal? ssreserva, int? salaCodigo, int? clienteCodigo);
        #endregion

        #region Métodos de soporte para entidad ArmadoReserva
        ArmadoDeReserva CrearArmadoReserva(ArmadoDeReserva reservaACrear);
        ArmadoDeReserva ObtenerArmadoReserva(int codigo);
        ArmadoDeReserva ModificarArmadoReserva(ArmadoDeReserva armadoreservaAModificar);
        void EliminarArmadoReserva(ArmadoDeReserva armadoreservaAEliminar);
        ICollection<ArmadoDeReserva> ListarArmadoReservas();
        ICollection<ArmadoDeReserva> ListarArmadoReservaBusqueda(int? armresCodigo, decimal? ssarmado, int? instrumentoCodigo, int? servicioCodigo, int? reservaCodigo);
        #endregion
    }
}
